' A QB64 program by b+ (a prolific programmer)
' Ported to BASIC Anywhere Machine by Charlie Veniot
' This program exported from BASIC Anywhere Machine (Version [5.2.3].[2023.08.08.01.01]) on 2023.08.14 at 16:58 (Coordinated Universal Time)
_Title "Particle Fountain" 'b+ 2020-08-27
Const nP = 50000
Type particle
x As Single
y As Single
dx As Single
dy As Single
r As Single
c As Long
End Type
Dim Shared p(1 To nP) As particle
DECLARE Sub new (i)
Screen _NewImage(1200, 600, 32)
_Delay .25
' _ScreenMove _Middle
For i = 1 To nP
new (i)
Next
Color , &H002200
Do
Cls
If lp < nP Then lp = lp + 100
For i = 1 To lp step 30
p(i).dy = p(i).dy + .1
p(i).x = p(i).x + p(i).dx
p(i).y = p(i).y + p(i).dy
If p(i).x < 0 Or p(i).x > _Width Then new(i)
If p(i).y > _Height And p(i).dy > 0 Then
p(i).dy = -.75 * p(i).dy: p(i).y = _Height - 5
End If
Circle (p(i).x, p(i).y), p(i).r, p(i).c
Next
' _Display
_delay 0.001
Loop ' Until _KeyDown(27)
end
Sub new (i)
p(i).x = _Width / 2 + Rnd * 20 - 10
p(i).y = _Height + Rnd * 5
p(i).dx = Rnd * 1 - .5
p(i).dy = -10
p(i).r = Rnd * 3
p(i).c = _RGB32(50 * Rnd + 165, 50 * Rnd + 165, 255)
End Sub